package com.liujun.spring4.demo.aop.ioc.base.resource;

import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;
import org.testng.Assert;

import java.io.IOException;

/**
 * 进行spring资源加载的调用示例操作
 *
 * @author liujun
 * @version 1.0
 * @date 2018-08-11 20:38:00
 */
public class PatternResolverTest {

  public static void main(String[] args) throws IOException {
    // ResourcePatternResolver扩展了ResourceLoader接口，定义了一个新的接口方法getResource(String locationPatter,
    // 该方法支持带资源类型前缀及Ant风格的资源表达式路径表达式
    ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();

    // 加载所有类包com.smart(及子孙包)下.xml为后缀的资源
    // ant风格的资源地址支持3种匹配:
    // ? 匹配文件名中的一个字符
    // * 匹配文件名中的任意字符
    // ** 匹配多层路径
    Resource[] resource = resolver.getResources("classpath*:com/liujun/spring4/**/*.xml");

    // 进行断言判断
    Assert.assertNotNull(resource);

    for (Resource res : resource) {
      // 在Resouce操作文件时，如果资源配制文件在项目发布时会被打包到jar，那不能使用Resouce#getFile()方法
      // 否则会抛出FileNotFoundException，但可以使用Resource#getInputStream()方法获取
      // res.getFile();
      // res.getInputStream();
      System.out.println(res.getDescription());
    }
  }
}
